﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 3505
    /// 商品销售
    /// </summary>
    [DataContract]
    public class SI3505Data
    {
        /// <summary>
        /// 医疗目录编码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "med_list_codg")]
        public string MedListCodg { get; set; }

        /// <summary>
        /// 定点医药机构目录编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_hilist_id")]
        public string FixmedinsHilistId { get; set; }

        /// <summary>
        /// 定点医药机构目录名称
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_hilist_name")]
        public string FixmedinsHilistName { get; set; }

        /// <summary>
        /// 定点医药机构批次流水号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_bchno")]
        public string FixmedinsBchno { get; set; }

        /// <summary>
        /// 开方医师证件类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 参照人员证件类型
        /// </summary>
        [DataMember(Name = "prsc_dr_cert_type")]
        public string PrscDrCertType { get; set; }

        /// <summary>
        /// 开方医师证件号码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "prsc_dr_certno")]
        public string PrscDrCertno { get; set; }

        /// <summary>
        /// 开方医师姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "prsc_dr_name")]
        public string PrscDrName { get; set; }

        /// <summary>
        /// 药师证件类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 参照人员证件类型
        /// </summary>
        [DataMember(Name = "phar_cert_type")]
        public string PharCertType { get; set; }

        /// <summary>
        /// 药师证件号码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "phar_certno")]
        public string PharCertno { get; set; }

        /// <summary>
        /// 药师姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "phar_name")]
        public string PharName { get; set; }

        /// <summary>
        /// 药师执业资格证号
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "phar_prac_cert_no")]
        public string PharPracCertNo { get; set; }

        /// <summary>
        /// 医保费用结算类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "hi_feesetl_type")]
        public string HiFeesetlType { get; set; }

        /// <summary>
        /// 结算ID
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 医保病人必填
        /// </summary>
        [DataMember(Name = "setl_id")]
        public string SetlId { get; set; }

        /// <summary>
        /// 就医流水号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 机构生成内唯一就诊流水
        /// </summary>
        [DataMember(Name = "mdtrt_sn")]
        public string MdtrtSn { get; set; }

        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 人员证件类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "psn_cert_type")]
        public string PsnCertType { get; set; }

        /// <summary>
        /// 证件号码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "certno")]
        public string Certno { get; set; }

        /// <summary>
        /// 人员姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "psn_name")]
        public string PsnName { get; set; }

        /// <summary>
        /// 生产批号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "manu_lotnum")]
        public string ManuLotnum { get; set; }

        /// <summary>
        /// 生产日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "manu_date")]
        public string ManuDate { get; set; }

        /// <summary>
        /// 有效期止
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "expy_end")]
        public string ExpyEnd { get; set; }

        /// <summary>
        /// 处方药标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "rx_flag")]
        public string RxFlag { get; set; }

        /// <summary>
        /// 拆零标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 0-否；1-是
        /// </summary>
        [DataMember(Name = "trdn_flag")]
        public string TrdnFlag { get; set; }

        /// <summary>
        /// 最终成交单价
        /// 参数类型：数值型
        /// 参数长度：16,6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "finl_trns_pric")]
        public decimal FinlTrnsPric { get; set; }

        /// <summary>
        /// 处方号
        /// 参数类型：字符型
        /// 参数长度：40
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "rxno")]
        public string Rxno { get; set; }

        /// <summary>
        /// 外购处方标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "rx_circ_flag")]
        public string RxCircFlag { get; set; }

        /// <summary>
        /// 零售单据号
        /// 参数类型：字符型
        /// 参数长度：40
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "rtal_docno")]
        public string RtalDocno { get; set; }

        /// <summary>
        /// 销售出库单据号
        /// 参数类型：字符型
        /// 参数长度：40
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "stoout_no")]
        public string StooutNo { get; set; }

        /// <summary>
        /// 批次号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "bchno")]
        public string Bchno { get; set; }

        /// <summary>
        /// 药品追溯码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "drug_trac_codg")]
        public string DrugTracCodg { get; set; }

        /// <summary>
        /// 药品条形码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "drug_prod_barc")]
        public string DrugProdBarc { get; set; }

        /// <summary>
        /// 货架位
        /// 参数类型：字符型
        /// 参数长度：20
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "shelf_posi")]
        public string ShelfPosi { get; set; }

        /// <summary>
        /// 销售/退货数量
        /// 参数类型：数值型
        /// 参数长度：16,4
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "sel_retn_cnt")]
        public decimal SelRetnCnt { get; set; }

        /// <summary>
        /// 销售/退货时间
        /// 参数类型：日期时间型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "sel_retn_time")]
        public string SelRetnTime { get; set; }

        /// <summary>
        /// 销售/退货经办人姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "sel_retn_opter_name")]
        public string SelRetnOpterName { get; set; }

        /// <summary>
        /// 备注
        /// 参数类型：字符型
        /// 参数长度：500
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "memo")]
        public string Memo { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI3505InputModel
    {
        [DataMember(Name = "selinfo")]
        public SI3505Data si3505Data { get; set; }
    }

    /// <summary>
    /// 3505
    /// 商品采购退货
    /// </summary>
    [DataContract]
    public class SI3505RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI3505InputModel Input { get; set; }

        public SI3505RequestModel(MedicalInsuranceOption config) : base(config)
        {
            Infno = "3505";
        }
    }
}
